1. Technical Field
The present invention is directed to an improved data processing system. More specifically, the present invention is directed to an apparatus and method for port sharing among a plurality of server processes.
2. Description of Related Art
Communication with applications running on a server is typically performed using ports and addresses assigned to the application and the server apparatus. A port may be a physical port or a logical port. A physical port is a pathway into and out of a computer or a network device such as a switch or router. For example, the serial and parallel ports on a personal computer are external sockets for plugging in communications lines, modems and printers. Every network adapter has a port (Ethernet, Token Ring, etc.) for connection to the network. Any device that transmits and receives data implies an available port to connect to each line.
A logical port is a number assigned to an application running on the server by which the application can be identified. While a server may have a single physical port, the server may make use of a plurality of logical ports. The combination of a logical port identifier and the address of the server apparatus is referred to as a socket.
The address of the server is a network address that identifies the server in the network and how to route data to a particular physical port of the server through the network. The address may take the form of a Uniform Resource Locator (URL), or in the case of the Internet, an Internet Protocol (IP) address such as 205.15.01.01, or the like. The address is included in headers of data packets transmitted by a device. The data packets are routed through the network from device to device by reading the header of the data packet and determining how to route the data packet to its intended destination based on the address.
Once the data packet arrives at the intended destination server apparatus, the server determines the destination application based on the logical port identifier included in the header information of the data packet. A data packet may be directed to a particular logical port by including the logical port identifier in its header information.
An application on a server **retrieves data by “listens” to a logical port by retrieving data having a logical port identifier that identifies the logical port associated with that application. The application will take the data directed to its logical port and place it in a queue for the application. In this way, data may be routed through a network to a server apparatus and provided to a particular application on the server apparatus for processing.
Most Internet services are advertised using well known ports on a server. For example, Hypertext Transport Protocol (HTTP) data messages are sent to logical port 80 of a server. The Internet services use the well known ports because most applications, i.e. Internet services, do not know how many logical ports are going to be available on the systems in which they will operate or how they will be configured. Accordingly, rather than forcing a server to change its configuration to accommodate a new application, the applications typically use well known ports that are supported by all server devices.
In addition, most client devices are configured to communicate using these well known ports. For example, client devices typcially communicate HTTP data using well known port 80, as previously described. If a server application or service wishes to be able to communicate with client devices using HTTP, the server application or service will be required to communicate using the well known logical ports that are used by the client devices.
Because most applications use well known ports, servers may be limited to providing a single Internet service with a single server apparatus. This is because each server service will need to monitor the same port for data messages since client devices only communicate with this well known logical port. As a result, each server service will consider all data messages received at a well known logical port to be directed to that service.
Thus, in the prior art systems, although a server service may theoretically be configured to listen to any port, in actuality the server services must all listen to the same port since client devices are limited to communicating with well known ports and the configuration of server apparatuses is not known a priori. As a result, it would be beneficial to have an apparatus and method by which multiple server services may be provided virtually simultaneously and share the same logical port of the server apparatus.